[問題] 圖片轉灰階化問題

看板C_Sharp作者 (小白)時間10年前 (2013/07/29 15:13), 編輯推噓5(5013)
留言18則, 6人參與, 最新討論串1/1
如題 最近在載入我的程式的時候 發現有些圖片執行灰階化 會造成圖片歪曲 如圖所示:http://ppt.cc/~2fE 我是參考井全民那篇 http://0rz.tw/644s8http://ppt.cc/lX0Q 這篇網誌所寫的程式 不知道是哪邊的問題 載入網路上的圖片有些就正常 有些就會變上圖那樣 自己用小畫家畫的也是 有些正常 有些會變上面那樣 不知道是CODE哪個部分要注意嗎 煩請指導一下 謝謝 另外我想請問在圖片上畫一條方程式的直線該怎麼畫 目前是想畫 ρ=Xcosθ+Ysinθ的直線 其中ρ和θ為已知 不知道該怎麼畫 (不能用openCV) 再麻煩指導一下 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.193.35.64 ※ 編輯: st111840 來自: 123.193.35.64 (07/29 15:15)

07/29 17:46, , 1F
圖的寬度改成 8 的倍數
07/29 17:46, 1F

07/29 22:04, , 2F
跟灰階化無關, pixel read 和 set 位置不同造成的
07/29 22:04, 2F

07/29 22:08, , 3F
for(;condition;) <-我猜是 i<x 被你寫成 i<=x
07/29 22:08, 3F

07/29 22:09, , 4F
所以 x 每run一行就會多出1, 就變成現在看到的這樣
07/29 22:09, 4F

07/30 08:42, , 5F
確認一下Stride這個值, 看有沒有正確的使用
07/30 08:42, 5F

07/30 12:09, , 6F
我的for迴圈是for(int j=0 ;j<Height ;j++)
07/30 12:09, 6F

07/30 12:09, , 7F
for(int i=0;i<Width;i++)
07/30 12:09, 7F
※ 編輯: st111840 來自: 123.193.35.64 (07/30 12:10)

07/30 12:11, , 8F
然後stride是直接用bytearray.stride 應該沒錯
07/30 12:11, 8F

07/30 12:11, , 9F
這個狀況是只有某些圖片才會出現 有些就正常 所以搞不懂
07/30 12:11, 9F

07/30 12:12, , 10F
是哪邊的問題 囧
07/30 12:12, 10F

07/30 13:04, , 11F
剛試了一下1F大說的把長寬改8的倍數 原本不行的真的正常
07/30 13:04, 11F

07/30 13:05, , 12F
了 不過不知道有沒有不更動原圖大小就能解決這問題的方法
07/30 13:05, 12F

07/30 13:38, , 13F
依你所述八成是stride沒真的用到..才會有的正常有的壞掉
07/30 13:38, 13F

07/30 13:38, , 14F
你的範例網頁有p+=skipByte; 這個有放對位置嘛?
07/30 13:38, 14F

07/30 14:04, , 15F
我的p+=skipbyte 這個是放在width那層迴圈外height迴圈內
07/30 14:04, 15F

07/30 14:07, , 16F
補充skipbyte=stride-bytearray.width*3 應該是沒錯吧
07/30 14:07, 16F

08/04 03:16, , 17F
畫線 graphics.DrawLine
08/04 03:16, 17F

08/25 01:32, , 18F
畫線就把像素點座標當xy套math來畫也可以啊..公式都有了..
08/25 01:32, 18F
文章代碼(AID): #1HzXOq5O (C_Sharp)