matlab读取黑白图目标位置的坐标,matlab对图像处理——裁剪 获取灰度图 获取坐标点...
matlab截取圖像Ⅱ
歡迎來(lái)到!德萊聯(lián)盟 應(yīng)該是CSDN之bruderlung的博客!
你可以仔細(xì)閱讀這篇文章,結(jié)合實(shí)例初步了解MATLAB的一些功能!
程序要求
建立循環(huán)函數(shù),通過(guò)程序依此讀取十幅原始圖像,然后將原始圖像轉(zhuǎn)存為灰度圖像
確定數(shù)碼管所顯示數(shù)字的四角坐標(biāo),然后將其依次輸出
依據(jù)之前尋找到的四個(gè)坐標(biāo),將數(shù)字部分以外的圖像設(shè)置為黑色;
在(3)的基礎(chǔ)上,通過(guò)編寫(xiě)程序?qū)?shù)字部分轉(zhuǎn)存為一個(gè)較小的圖像(該圖像的尺寸由步驟(3)中的四個(gè)坐標(biāo)計(jì)算得到)。
建立循環(huán)函數(shù)
save_path='D:\picture\'; %獲取圖片所在位置
img_path_list = dir(strcat(save_path,'*.jpg')); %依次僅讀取文件夾中的.jpg格式圖片
img_num=length(img_path_list); %判斷圖片個(gè)數(shù)
for i = 1:img_num
picture_name = img_path_list(i).name; %獲取圖片的名稱
picture_1 = imread(strcat(save_path,picture_name)); %1.建立循環(huán)函數(shù)依次讀取原始圖像
end
處理后效果:
確定坐標(biāo)
ginput函數(shù)
功能:允許用戶以交互方式使用鼠標(biāo)選定要裁剪的區(qū)域以此獲取坐標(biāo)點(diǎn)并以矩形方式裁剪
[x,y]=ginput(4); %獲取數(shù)碼管所顯示的數(shù)字的四角坐標(biāo),獲取坐標(biāo)時(shí)要按照左上,右上,左下,右下的順序方式獲取∵后面涂黑時(shí)有局限性
灰度圖
picture_2=rgb2gray(picture_1); %將24位原始圖轉(zhuǎn)為8位灰度圖
處理后效果:
背景設(shè)為黑色
picture_1 = imread(strcat(save_path,picture_name)); %1.建立循環(huán)函數(shù)依次讀取原始圖像
picture_2=rgb2gray(picture_1); %將24位原始圖轉(zhuǎn)為8位灰度圖
picture_3 = picture_2;
%對(duì)除數(shù)字外的圖像進(jìn)行填充顏色
for m = 1:size(picture_3,1)
for n = 1:size(picture_3,2)
if n < x(1) || n > x(4) || m < y(1) || m > y(4) %不在矩形內(nèi)的點(diǎn)變?yōu)楹谏?/p>
picture_3(m,n,1) = 0;
end
end
end
imwrite(picture_3,[num2str(i+10),'.jpg']);
處理后效果:
裁剪圖片
imcrop函數(shù)
功能:用于返回圖像的一個(gè)裁剪區(qū)域。可把圖像顯示在一個(gè)圖像窗口中
picture_4 = imcrop(picture_2,[x(1),y(1),abs(x(1)-x(4)),abs(y(1)-y(4))]); %對(duì)圖像進(jìn)行截取,(x1,y1)為數(shù)字左上角坐標(biāo),(x4,y4)為右下角的坐標(biāo)。abs(x(1)-x(4))為x軸截取的長(zhǎng)度,abs(y(1)-y(4))為y軸截取的長(zhǎng)度。
處理后效果:
完整代碼
在這里插入代碼片
%必讀:獲取坐標(biāo)時(shí)需要用鼠標(biāo)點(diǎn)擊四次,分別為數(shù)字的四角,獲取坐標(biāo)時(shí)要按照左上,右上,左下,右下的順序方式獲取∵后面涂黑時(shí)有局限性
save_path='D:\picture\'; %獲取圖片所在位置
img_path_list = dir(strcat(save_path,'*.jpg')); %依次僅讀取文件夾中的.jpg格式圖片
img_num=length(img_path_list); %判斷圖片個(gè)數(shù)
for i = 1:img_num
picture_name = img_path_list(i).name; %獲取圖片的名稱
picture_1 = imread(strcat(save_path,picture_name)); %1.建立循環(huán)函數(shù)依次讀取原始圖像
picture_2=rgb2gray(picture_1); %將24位原始圖轉(zhuǎn)為8位灰度圖
%size(picture_2); %求出我的圖像的大小
%s=1920
imshow(picture_2)
if i==1 %用if只需要確定一次圖像中數(shù)字的四角坐標(biāo)
[x,y]=ginput(4); %獲取數(shù)碼管所顯示的數(shù)字的四角坐標(biāo),
imwrite(picture_2,[num2str(i),'.jpg']) %灰度圖從01開(kāi)始命名到10結(jié)束
picture_3 = picture_2;
%對(duì)除數(shù)字外的圖像進(jìn)行填充顏色
for m = 1:size(picture_3,1)
for n = 1:size(picture_3,2)
if n < x(1) || n > x(4) || m < y(1) || m > y(4) %不在矩形區(qū)域內(nèi)的點(diǎn)變?yōu)楹谏?/p>
picture_3(m,n,1) = 0;
end
end
end
imwrite(picture_3,[num2str(i+10),'.jpg']); %將涂黑的圖片保存并從11開(kāi)始命名到20結(jié)束
picture_4 = imcrop(picture_3,[x(1),y(1),abs(x(1)-x(4)),abs(y(1)-y(4))]);
imwrite(picture_4,[num2str(i+20),'.jpg']); %將截取的數(shù)字圖像保存并從21開(kāi)始命名到30結(jié)束
else
imwrite(picture_2,[num2str(i),'.jpg']); %灰度圖從01開(kāi)始命名到10結(jié)束
picture_3 = picture_2;
%對(duì)除數(shù)字外的圖像進(jìn)行填充顏色
for m = 1:size(picture_3,1)
for n = 1:size(picture_3,2)
if n < x(1) || n > x(4) || m < y(1) || m > y(4) %不在矩形區(qū)域內(nèi)的點(diǎn)變?yōu)楹谏?/p>
picture_3(m,n,1) = 0;
end
end
end
imwrite(picture_3,[num2str(i+10),'.jpg']); %將涂黑的圖片保存并從11開(kāi)始命名到20結(jié)束
picture_4 = imcrop(picture_3,[x(1),y(1),abs(x(1)-x(4)),abs(y(1)-y(4))]); %對(duì)圖像進(jìn)行截取,(x1,y1)為數(shù)字左上角坐標(biāo),(x4,y4)為右下角的坐標(biāo)。abs(x(1)-x(4))為x軸截取的長(zhǎng)度,abs(y(1)-y(4))為y軸截取的長(zhǎng)度。
imwrite(picture_4,[num2str(i+20),'.jpg']); %將截取的數(shù)字圖像保存并從21開(kāi)始命名到30結(jié)束
end
end
[x,y] %矩陣中每一行依次為四點(diǎn)坐標(biāo)
% 備注:1.剛開(kāi)始if函數(shù)里面只寫(xiě)了[x,y]=ginput(4)但是運(yùn)行后無(wú)法顯示0的圖像了,由于時(shí)間原因所以,就將處理的程序全部復(fù)制到i==1時(shí)里面
% 2.picture_1:24位rgb圖象 3.picture_2: 8位灰度圖 4.picture_3:黑色背景圖
% 5.picture_4:數(shù)字提取圖
總結(jié)
以上是生活随笔為你收集整理的matlab读取黑白图目标位置的坐标,matlab对图像处理——裁剪 获取灰度图 获取坐标点...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 蔚来回应前实习生遭性侵后受不公正对待一事
- 下一篇: matlab算概率,用matlab计算概